package com.qingshu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qingshu.common.entity.custom.Music;
import com.qingshu.common.entity.custom.model.MusicAddModel;
import com.qingshu.common.entity.custom.model.MusicQueryModel;
import com.qingshu.common.entity.custom.model.MusicResourceModel;
import com.qingshu.common.entity.custom.vo.MusicVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Huzz
 * @since 2021-12-09
 */
public interface IMusicService extends IService<Music> {

    /**
     * 音乐添加
     * @param model
     * @return
     */
    boolean addMusic(MusicAddModel model);

    /**
     * 根据id修改
     * @param music
     * @return
     */
    boolean updateMusicById(Music music);

    /**
     * 根据id删除
     * @param musicId
     * @return
     */
    boolean delMusicById(Integer musicId);

    /**
     * 根据id进行查询
     * @param roleId
     * @return
     */
    Music finMusicById(Integer musicId);

    /**
     * 根据音乐名称进行查询
     * @param musicName
     * @return
     */
    Music finUserByRoleName(String musicName);

    /**
     * 查询分页列表
     * @param pageNum
     * @param pageSize
     * @param model
     * @return
     */
    Page<MusicVO> findMusicPage(Integer pageNum, Integer pageSize, MusicQueryModel model);

    /**
     * 批量添加音乐
     * @param modelList
     * @return
     */
    boolean addMusicByList(List<MusicAddModel> modelList);

    /**
     * 查询歌曲相关资源
     * @param model
     * @return
     */
    Map<String, String> getMusicResource(MusicResourceModel model);

    /**
     * 歌曲类型占比
     * @return
     */
    List<Map<String, Object>> getMusicTypePercentage();
}
